﻿/*
统计数字 
Time Limit:1000MS  Memory Limit:32768K

  
	Description:
	给出一个字符串S（S仅由’0’~’9’组成，且不包含空格，长度≤100），请将其各个数字按个数打印出，并且输出各个数字之和。
	
	  Input:
	  第一个行整数N为测试数据组数。接下来N行为S 
	  Output:
	  如果数字i(0≤i≤9)出现的次数大于0则输出i : Ai (Ai为i出现的次数)，并在末尾输出S中各个数字的和，每组输出结束后空一行。（最后一组数据后无空行） 
	  Sample Input:
	  2
	  0012
	  13588
	  Sample Output:
	  0:2
	  1:1
	  2:1
	  3
	  
		1:1
		3:1
		5:1
		8:2
		25
*/
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;


class Statics
{
public:
	Statics():_sum(0)
	{
		fill(_count, _count+10, 0);
	}
	Statics& operator=(const Statics& st)
	{
		this->_sum=st._sum;
		copy(st._count, st._count+10, this->_count);
		return *this;
	}
	void operator()(char ch)
	{
		int tmp=ch-'0';
		_sum+=tmp;
		++_count[tmp];
	}
	friend ostream& operator<<(ostream &os, const Statics& st);
private:
	int _count[10];
	int _sum;
};

ostream& operator<<(ostream &os, const Statics& st)
{
	int total=0;
	for (int i=0; i<10; ++i)
		if(st._count[i])
			os<<i<<":"<<st._count[i]<<endl;
	cout<<st._sum<<"\n\n";
	return os;
}

int main(int argc, char* argv[])
{
	unsigned int n;
	
	cin>>n;
	while(n-- >0)
	{
		string input;
		Statics st;
		cin>>input;
		st=for_each(input.begin(), input.end(), st);
		cout<<st;
	}
	
	return 0;
}
